package com.atguigu.linklist;

public class RandList2 {
    public static ListNode copyRandList(ListNode head){
        if(head==null) return null;
        ListNode cur=head;
        ListNode next=null;
        while(cur!=null){
            next=cur.next;
            cur.next=new ListNode(cur.val);
            cur.next.next=next;
            cur=next;
        }
        cur=head;
        ListNode curCopy=null;
        while(cur!=null){
            next=cur.next.next;
            curCopy=cur.next;
            curCopy.random=cur.random!=null?cur.random.next:null;
            cur=next;
        }
        ListNode res=head.next;
        cur=head;
        while(cur!=null){
            next=cur.next.next;
            curCopy=cur.next;
            cur.next=next;
            curCopy.next=next!=null?next.next:null;
            cur=next;
        }
        return res;
    }
}
